Skip to content

WIP#4669

Draft
snazy wants to merge 22 commits into
apache:mainfrom
snazy:polaris-test-server
Draft

WIP#4669
snazy wants to merge 22 commits into
apache:mainfrom
snazy:polaris-test-server

Conversation

@snazy

@snazy snazy commented Jun 9, 2026

Copy link
Copy Markdown
Member

Pile of build and CI improvement changes - not to be merged as is

@github-project-automation github-project-automation Bot moved this to PRs In Progress in Basic Kanban Board Jun 9, 2026
@snazy snazy force-pushed the polaris-test-server branch 19 times, most recently from 87bdba4 to f69ee9d Compare June 13, 2026 07:39
snazy added 3 commits June 13, 2026 10:29
This allows creating a `.env` file and for example enable the Gradle configuration cache via
```
GRADLE_OPTS='-Dorg.gradle.configuration-cache=true'
```
This new plugin for test purposes mainly buys us separation and faster feedback:

- Test projects no longer need to build or embed a full Quarkus test app just to run against Polaris.
- Tests can depend on a ready `quarkus-run.jar` via `polarisServer(...)`, so the server lifecycle is externalized from the test JVM.
- Less Quarkus application builds across all checks, improving overall test runtime.
- Quarkus dependencies stop leaking into test classpaths, which reduces dependency conflicts with Spark, Iceberg, Hadoop, etc.
- The plugin makes `enforcedPlatform(libs.quarkus.bom)` safer because Quarkus is mostly constrained to the app/server side instead of the tests.
- Each test task can get its own isolated Polaris server instance and config.
- Projects can use normal `JvmTestSuite`s, which improves Gradle/IntelliJ behavior and keeps test classpaths scoped.
- Custom server startup hooks still allow task-specific setup, like OPA/Testcontainers or RustFS, without baking those concerns into the plugin.
Adds a `PolarisServerManager` implementation for the polaris-server-test-runner plugin.
@snazy snazy force-pushed the polaris-test-server branch 5 times, most recently from 9cd265a to ec96296 Compare June 13, 2026 10:47
snazy added 11 commits June 13, 2026 12:59
This change moves a bunch of Quarkus test profiles into the shared `Profiles` class.

With that, exact duplicate profiles have been merged into one.

The Iceberg catalog profiles have been merged.

Each distinct Quarkus test profile requires the testing infrastructure to perform an expensive, time-consuming augmentation pass, hence this effort to unify test profiles.
Removed the four PreBootstrapped* admin profiles and the pre-bootstrap config flag from AdminProfiles.
* Switched purge tests to the regular backend profiles.
* Kept purge setup inside PurgeCommandTestBase with an unconditional test startup observer, using purge-specific realms: `purge-test-realm1`, `purge-test-realm2`, `purge-test-missing-realm`.
This change moves a few test cases to `PurgeCommandTest` and the new `BootstrapCommandTest`.

Each `@QuarkusMainTest`/`@Launch` test case starts a new Quarkus command tool with fresh test resources. This means that each of these test cases also spawns new Postgres/Cockroach/Mongo container instances, which is time consuming.

Runtime of `:polaris-admin:test` on my machine dropped from ~7 minutes to ~4 minutes.
@snazy snazy force-pushed the polaris-test-server branch 4 times, most recently from f79a75d to 0d0ee7a Compare June 13, 2026 12:20
snazy added 7 commits June 13, 2026 15:12
Save one profile (and its Quarkus augmentation), move more test profiles to `Profiles`.
Use `forkEvery = 1` only for `:polaris-runtime-service:test`.
Use enlarged heap only for `:polaris-runtime-service:test` and `:polaris-admin:test`.
`polaris-runtime-service`'s `intTest` and `cloudTest` and `:polaris-admin:test` will use `forkEvery=0`
* Replaced with simple `noSourceCheckProjects` in `Utilities.kt`
* Evaluate in polaris-spotless and polaris-java convention plugins
Makes a couple of eager resolutions across the build scripts lazily evaluated.
This should save a bunch of potentially unnecessary resolutions, depending on the Gradle invocation.
This change mostly focuses on isolating projects even further.
Also a few more direct usages of `System.getenv` are moved to the Gradle provider.
This saves the creation of new containers for each integration-test.
@snazy snazy force-pushed the polaris-test-server branch from 0d0ee7a to 67de53e Compare June 13, 2026 17:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant